﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Entity; 
using ASS.BUS.DTO;
using ASS.BUS.Services;
using ASS.DAO;

namespace ASS
{
    public partial class FrmMainClinicStaff : Form
    {
        NhanVien _nhanVien;
        FrmLogin _frmLogin;
        public FrmMainClinicStaff()
        {
            InitializeComponent();
        }

        public FrmMainClinicStaff(NhanVien nhanVien, FrmLogin frmLogin)
        {
            _frmLogin = frmLogin;
            _nhanVien = nhanVien;
            frmLogin.Hide();
            InitializeComponent();
            this.FormBorderStyle = FormBorderStyle.FixedDialog;
            //Hide the System Menu / Control Box / System Bar
            this.ControlBox = false;
        }

        private void tsbPatient_Click(object sender, EventArgs e)
        {
            lblTitle.Text = "Hồ sơ bệnh nhân";
            dvgBenhAn.Visible = false;
            dvgLichhen.Visible = false;
            dvgPatient.Visible = true;
            btnEdit.Enabled = true;
            lblID.Text = "Mã bệnh nhân";
            lblName.Text = "Tên bệnh nhân";
            dtpNgayHen.Visible = false;
            txtName.Visible = true;
            txtID.Visible = true;
            var benhNhanServices = new BenhNhanServices();
            dvgPatient.DataSource = benhNhanServices.GetBenhNhans();
        }

        private void FrmMainClinicStaff_Load_1(object sender, EventArgs e)
        {
            if (_nhanVien.LoaiNhanVien.Equals("Tiếp tân") == true)
            {
                lblTitle.Text = "Danh sách lịch hẹn";
                lblHello.Text = "Xin chào, "+_nhanVien.Ten;
                tsbBenhAn.Visible = false;
                tsbPatient.Visible = false;
                tsbChuanDoan.Visible = false;
                dvgBenhAn.Visible = false;
                dvgPatient.Visible = false;
                dvgLichhen.Visible = true;
                lblID.Text = "Mã lịch hẹn:";
                lblName.Text = "Ngày hẹn:";
                txtName.Visible = false;
                dtpNgayHen.Visible = true;
                this.dvgLichhen.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
                var lichHens = new LichHenServices();
                dvgLichhen.DataSource = lichHens.GetLichHens();
            }
            else
            {
                lblHello.Text = "Xin chào, " + _nhanVien.Ten;
                var benhNhanServices = new BenhNhanServices();
                dvgPatient.DataSource = benhNhanServices.GetBenhNhans();
                this.dvgPatient.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                this.dvgBenhAn.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                this.dvgLichhen.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            }
        }

        private void btnInsert_Click(object sender, EventArgs e)
        {
            if (dvgPatient.Visible == true)
            {
                FrmInsertPatient frmInsertPatient = new FrmInsertPatient(this);
                frmInsertPatient.Show();
            }

            else if (dvgLichhen.Visible == true)
            {
                FrmCreateAppointment frmCreateAppointment = new FrmCreateAppointment(this);
                frmCreateAppointment.Show();
            }
            else
            {
                FrmTreatments frmChuanDoan = new FrmTreatments(this, _nhanVien);
                frmChuanDoan.Show();
            }
        }

        private void tsbClose_Click_1(object sender, EventArgs e)
        {
            DialogResult ok = MessageBox.Show("Bạn có muốn thoát không? ", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (ok == DialogResult.Yes)
            {
                this.Close();
                _frmLogin.Show();
            }
        }

        private void mnuClose_Click(object sender, EventArgs e)
        {
            DialogResult ok = MessageBox.Show("Bạn có muốn thoát không? ", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (ok == DialogResult.Yes)
            {
                this.Close();
                _frmLogin.Show();
            }    

        }

        private void mnuLogout_Click(object sender, EventArgs e)
        {
            this.Close();
            _frmLogin.Show();
        }
        
        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (dvgPatient.Visible == true)
            {
                if (this.dvgPatient.SelectedRows.Count > 0)
                {
                    var benhNhans = new BenhNhanServices();
                    foreach (DataGridViewRow row in dvgPatient.SelectedRows)
                    {
                        //get key
                        int rowId = Convert.ToInt32(row.Cells[0].Value);
                        if (rowId > 0)
                        {
                            DialogResult ok = MessageBox.Show("Bạn có chắc muốn xóa bệnh nhân này không?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                            if (ok == DialogResult.OK)
                            {
                                //delete 
                                benhNhans.DeleteBenhNhan(rowId);
                                dvgPatient.DataSource = benhNhans.GetBenhNhans();
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Bạn chưa chọn bệnh nhân nào!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            else if (dvgLichhen.Visible == true)
            {
                if (this.dvgLichhen.SelectedRows.Count > 0)
                {
                    var lichHens = new LichHenServices();
                    foreach (DataGridViewRow row in dvgLichhen.SelectedRows)
                    {
                        //get key
                        int rowId = Convert.ToInt32(row.Cells[0].Value);
                        if (rowId > 0)
                        {
                            DialogResult ok = MessageBox.Show("Bạn có chắc muốn xóa lịch hẹn này không?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                            if (ok == DialogResult.OK)
                            {
                                //delete 
                                lichHens.Delete(rowId);
                                dvgLichhen.DataSource = lichHens.GetLichHens();
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Bạn chưa chọn lịch hẹn nào!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else if (dvgBenhAn.Visible == true)
            {
                if (this.dvgBenhAn.SelectedRows.Count > 0)
                {
                    var benhAns = new DonThuocServices();
                    foreach (DataGridViewRow row in dvgBenhAn.SelectedRows)
                    {
                        //get key
                        int rowId = Convert.ToInt32(row.Cells[0].Value);
                        if (rowId > 0)
                        {
                            DialogResult ok = MessageBox.Show("Bạn có chắc muốn xóa hồ sơ này không?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                            if (ok == DialogResult.OK)
                            {
                                //delete 
                                benhAns.Delete(rowId);
                                dvgBenhAn.DataSource = benhAns.GetDonThuocs();
                            }
                        }
                    }
                }
            }
        }

        private void tsbLichhen_Click(object sender, EventArgs e)
        {
            lblTitle.Text = "Danh sách lịch hẹn";
            dvgPatient.Visible = false;
            dvgBenhAn.Visible = false;
            dvgLichhen.Visible = true;
            lblID.Text = "Mã lịch hẹn:";
            lblName.Text = "Ngày hẹn:";
            txtName.Visible = false;
            dtpNgayHen.Visible = true;
            btnEdit.Enabled = true;
            var lichHens = new LichHenServices();
            dvgLichhen.DataSource = lichHens.GetLichHens();
        }

        private void tsbBenhAn_Click_1(object sender, EventArgs e)
        {
            dvgPatient.Visible = false;
            dvgLichhen.Visible = false;
            dvgBenhAn.Visible = true;
            lblID.Text = "Mã hồ sơ";
            btnEdit.Enabled = false;
            lblName.Text = "Mã bệnh nhân";
            txtName.Visible = true;
            dtpNgayHen.Visible = false;
            var _benhAns = new DonThuocServices();
            lblTitle.Text = "Hồ sơ bệnh án";
            dvgBenhAn.DataSource = _benhAns.GetDonThuocs();
        }

        private void btnEdit_Click(object sender, EventArgs e)
        {
            //Edit Benh nhan
            if (dvgPatient.Visible == true)
            {
                if (this.dvgPatient.SelectedRows.Count > 1)
                {
                    MessageBox.Show("Bạn chỉ chọn 1 bệnh nhân để sửa!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (this.dvgPatient.SelectedRows.Count < 1)
                {
                    MessageBox.Show("Bạn chưa chọn bệnh nhân nào!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
                else
                {
                    BenhNhanServices benhNhanServices = new BenhNhanServices();
                    foreach (DataGridViewRow row in dvgPatient.SelectedRows)
                    {
                        //get key
                        int rowId = Convert.ToInt32(row.Cells[0].Value);
                        if (rowId > 0)
                        {
                            var patient = benhNhanServices.GetBenhNhan(rowId);
                            if (patient != null)
                            {
                                var frm = new FrmEditInforPatient(patient,this);
                                frm.Show();
                            }
                            else
                            {
                                MessageBox.Show(@"Không tìm thấy bệnh nhân trong hệ thống");
                            }
                        }
                    }     
                }
            }
            else if (dvgLichhen.Visible == true)
            {
                if (this.dvgLichhen.SelectedRows.Count > 1)
                {
                    MessageBox.Show("Bạn chỉ chọn 1 bệnh nhân để sửa!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (this.dvgLichhen.SelectedRows.Count < 1)
                {
                    MessageBox.Show(@"Bạn chưa chọn bệnh nhân nào!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
                else
                {
                    LichHenServices lichHens = new LichHenServices();
                    foreach (DataGridViewRow row in dvgLichhen.SelectedRows)
                    {
                        //get key
                        int rowId = Convert.ToInt32(row.Cells[0].Value);
                        if (rowId > 0)
                        {
                            var lichHen = lichHens.GetLichHen(rowId);
                            if (lichHen != null)
                            {
                                var frm = new FrmEditLichHen(lichHen, this);
                                frm.Show();
                            }
                            else
                            {
                                MessageBox.Show(@"Không tìm thấy bệnh nhân trong hệ thống");
                            }
                        }
                    }
                }
            }
        }

        private void tsbReport_Click(object sender, EventArgs e)
        {
            MessageBox.Show(@"Chưa đến thời gian báo cáo!");  
        }

        private void tsbHelp_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Nếu bạn có thắc mắc gì về MHC-PMS vui lòng liên hệ: Nguyễn Hà Tân - 51203213 hoặc Nguyễn Thị Kim Tuyến - 51203170 để được hổ trợ. Xin chân thành cảm ơn!", "Trợ giúp", MessageBoxButtons.OK, MessageBoxIcon.Information);

        }
        
        private void tsbChuanDoan_Click(object sender, EventArgs e)
        {
            FrmTreatments frmTreatment = new FrmTreatments(this, _nhanVien);
            frmTreatment.Show();
        }

        private void trợGiúpToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Nếu bạn có thắc mắc gì về MHC-PMS vui lòng liên hệ: Nguyễn Hà Tân - 51203213 hoặc Nguyễn Thị Kim Tuyến - 51203170 để được hổ trợ. Xin chân thành cảm ơn!", "Trợ giúp", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void báoCáoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chưa đến thời gian báo cáo!");  
        }

    }
}
